#ifndef __DRV_CAN1_H__
#define __DRV_CAN1_H__

#include "gd32f4xx_can.h"
#include "drv_can0.h"
extern int drv_can1_node_init(void);
extern int DRV_CANBUS1_Enable(void);
extern int DRV_CANBUS1_Wakeup(void);
extern int DRV_CANBUS1_Disable(void);
extern int drv_can1_nvic_config(void);
extern int drv_can1_set_baudrate(uint16_t baudrate);
extern void DRV_CANBUS1_RECEIVE_Interrupt(CAN_DATA_FORMAT_T *p_msg);
extern int DRV_CANBUS1_SET_RECEIVE_Filter(CAN_ID_FORMAT_T *id_tab, uint8_t id_num);
extern int DRV_CANBUS1_Send(uint32_t id, uint8_t ide, uint8_t *data, uint8_t length);

extern void CAN1_Test(void);


extern void Can1_Data_Store_Fifo(uint32_t id,uint8_t *data, uint8_t length);
extern void Can1_Tx_Fifo(void);


/**
 * @brief can1注册标准帧ID，该函数放到参数初始化里面，即放到CAN初始化之前
 *
 * @param std_id 标准帧ID，最多注册56个ID，每4个ID为一组
 * @return int8_t >=0：组号，范围（14~28）；-1：超出最大列表数；-2：标准帧ID错误；
 */
int8_t can1_register_std_list_id(uint32_t std_id);
/**
 * @brief can1 注册扩展帧ID，该函数放到参数初始化里面，即放到CAN初始化之前;
 * 
 * @param ext_id 扩展帧ID，最多注册28个ID，每2个ID为一组
 * @return int8_t >=0：组号，范围（14~28）；-1：超出最大列表数；-2：扩展帧ID错误；
 * 注意：本函数必须放到can1_register_std_list_id函数之后
 */
int8_t can1_register_ext_list_id(uint32_t ext_id);

/**
 * @brief CAN0 注册标准帧列表和扩展帧列表
 */
void can1_register_list_id(void);
#endif
